package com.lch.base.http.config;

import retrofit2.Retrofit;
import retrofit2.Retrofit.Builder;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.converter.scalars.ScalarsConverterFactory;

/**
 * Retrofit提供者
 * 如果解析基本。可以在外部需要时再注入也可以
 * addConverterFactory是有先后顺序的，如果有多个ConverterFactory都支持同一种类型，那么就是只有第一个才会被使用
 * 如是有Gson这类的Converter 一定要放在其它前面,待验证
 * 参考http://www.jianshu.com/p/308f3c54abdd
 * gson的效率相比jackson还是有较大差距，这里选用jackson，所以重新生成一个Retrofit对象，用到JacksonConverterFactory的转换类
 *
 * @author lee(29487113@qq.com) on 17/12/22
 */
public class RetrofitProvide {
    public static Builder provideRetrofitBuild(String baseUrl) {
        Builder builder = new Retrofit.Builder()
                .baseUrl(baseUrl + "/")
                .addConverterFactory(ScalarsConverterFactory.create()) //解析基本类型的
                .addConverterFactory(GsonConverterFactory.create()) //解析json类型
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create());
        return builder;
    }
}
